// 程序运行时产生的数据都属于临时数据，程序一旦运行结束都会被销毁。
// 通过文件可以将数据持久化
// C++中对文件操作需要包含头文件<fstream>

// 文件类型分两种
// 1.文本文件：文件以文本的ASCII码形式存储在计算机中
// 2.二进制文件：文件以二进制的形式存储在计算机中，用户一般不能直接读懂它们

// 操作文件的三大类
//  1.文件输入流：ifstream：读操作
//  2.文件输出流：ofstream：写操作
//  3.文件流：fstream：读写操作

// 写文件步骤：
// 1.包含头文件<fstream>
#include <fstream>
// 2.创建文件输出流对象
// ofstream ofs;
// 3.打开文件
//  ofs.open("文件名路径",打开方式);
// 4.写数据
//  ofs << "写入数据";
// 5.关闭文件
//  ofs.close();
// 6.判断文件是否打开成功
//  if(!ofs.is_open())
//  {
//      cout << "文件打开失败" << endl;
//  }
// 7.判断文件是否关闭成功
//  if(ofs.is_open())
//  {
//      cout << "文件关闭失败" << endl;
//  }
// 8.判断文件是否存在
//  ifstream ifs("文件名路径");
//  if(!ifs.is_open())
//  {
//      cout << "文件不存在" << endl;
//  }
// 9.判断文件是否打开成功
//  if(!ifs.is_open())
//  {
//      cout << "文件打开失败" << endl;
//  }
// 10.判断文件是否关闭成功
//  if(ifs.is_open())
//  {
//      cout << "文件关闭失败" << endl;
// }
// 文件打开方式：
// 1.ios::in：以读的方式打开文件，文件必须存在·
// 2.ios::out：以写的方式打开文件，文件必须存在
// 3.ios::app：以追加的方式打开文件，文件必须存在
// 4.ios::ate：以读写的方式打开文件，文件必须存在
// 5.ios::trunc：以写的方式打开文件，文件必须存在
// 6.ios::binary：以二进制的方式打开文件，文件必须存在
// 7.ios::nocreate：以读的方式打开文件，文件必须存在
// 8.ios::noreplace：以读的方式打开文件，文件必须存在
#include <iostream>
#include <string>
// 文本文件 写文件
using namespace std;
void test01() {
    // 1.创建文件输出流对象
    ofstream ofs;
    // 2.打开文件
    ofs.open("test.txt", ios::out);
    // 3.判断文件是否打开成功
    if (!ofs.is_open()) {
        cout << "文件打开失败" << endl;
        return;
    }
    // 4.写数据
    ofs << "hello world" << endl;
    ofs << "hello c++" << endl;
    // 5.关闭文件
    ofs.close();
    // 6.判断文件是否关闭成功
    if (ofs.is_open()) {
        cout << "文件关闭失败" << endl;
        return;
    }
}
int main() {
    system("pause");
    return 0;
}